Merge dictionaries

D = D1.copy(); D.update(D2)

Write a Python script to merge Python Dictionaries.

1. Non-pythonic procedural way (item by item)

def merge_01(*dicts):
    m1 = {}
    for dict in dicts:
        for k in dict.keys():
            m1[k] = dict[k]
    return(m1)

2. Classic pythonic way (copy & update)

def merge_02(*dicts):
    m = {}
    for dict in dicts:
        if m is None
            m = dict.copy()
        else:
            m.update(dict)
    return(m)

3. Via dictionary comprehensions

def merge_03(*dicts):
    return {k: v for d in dicts for k, v in d.items()}

4. Python 3.5+ pythonic way

Warning: crashes on Python <= 3.4
m4 = {**query, **route, **post}

Test:

route = {'id': 271,
         'title': 'Fast apps'}
query = {'id': 1,
         'render_fast': True}
post = {'email': 'j@j.com',
        'name': 'Jeff'}

print("Individual dictionaries: ")
print("route: {}".format(route))
print("query: {}".format(query))
print("post:  {}".format(post))

m1 = merge_01(route, query, post)
m2 = merge_02(route, query, post)
m3 = merge_03(route, query, post)
m4 = {**route, **query, **post}

print(m1)
print(m2)
print(m3)
print(m4)

print("Are the same? " + 'yes' if m1 == m2 and m2 == m3 and m3 == m4 else 'no')